﻿//using RuoVea.OmiApi.UserRoleMenu.Enum;
//using RuoVea.OmiUserRoleMenu.Enums;

//namespace RuoVea.OmiUserRoleMenu.Dto;

///// <summary>
///// 
///// </summary>
//public class SysMenuParam : PageParam
//{

//}
///// <summary>
///// 基础时间操作员字段
///// </summary>
//public class BaseDto
//{
//    /// <summary>
//    /// 创建时间
//    /// </summary>
//    public DateTime? CreateTime { get; set; }

//    /// <summary>
//    /// 创建人
//    /// </summary>
//    public long? Creator { get; set; }
//    /// <summary>
//    /// 修改时间
//    /// </summary>
//    public DateTime? ModifyTime { get; set; }

//    /// <summary>
//    /// 修改人
//    /// </summary>
//    public long? Modifier { get; set; }

//    /// <summary>
//    /// 逻辑删除:0=未删除,1=已删除 Default:0
//    /// </summary>
//    public IsDelete? IsDeleted { get; set; }
//}
///// <summary>
///// 
///// </summary>
//public class SysMenuDto : BaseDto
//{
//    /// <summary>
//    /// 菜单Id
//    /// </summary>
//    //[Required(ErrorMessage = "菜单Id不能为空")]
//    public long Id { get; set; }

//    /// <summary>
//    /// 菜单类型（字典 0目录 1菜单 2按钮）
//    /// </summary>
//    [Required(ErrorMessage = "菜单类型不能为空")]
//    public MenuType Type { get; set; }

//    /// <summary>
//    /// 父Id
//    /// </summary>
//    public int Pid { get; set; }

//    /// <summary>
//    /// 名称
//    /// </summary>
//    public string Name { get; set; }

//    /// <summary>
//    /// 编码
//    /// </summary>
//    public string Code { get; set; }

//    /// <summary>
//    /// 图标
//    /// </summary>
//    public string Icon { get; set; }

//    /// <summary>
//    /// 路由地址
//    /// </summary>
//    public string Router { get; set; }

//    /// <summary>
//    /// 组件地址
//    /// </summary>
//    public string Component { get; set; }

//    /// <summary>
//    /// 权限标识
//    /// </summary>
//    public string Permission { get; set; }

//    /// <summary>
//    /// 应用分类（应用编码）
//    /// </summary>
//    public string Application { get; set; }

//    /// <summary>
//    /// 打开方式（字典 0无 1组件 2内链 3外链）
//    /// </summary>
//    public MenuOpenTypeEnum OpenType { get; set; }


//    /// <summary>
//    /// 是否可见（Y-是，N-否）
//    /// </summary>
//    public string Visible { get; set; }

//    /// <summary>
//    /// 内链地址
//    /// </summary>
//    public string Link { get; set; }

//    /// <summary>
//    /// 重定向地址
//    /// </summary>
//    public string Redirect { get; set; }

//    /// <summary>
//    /// 权重（字典 1系统权重 2业务权重）
//    /// </summary>
//    public MenuWeight Weight { get; set; }

//    /// <summary>
//    /// 排序
//    /// </summary>
//    public int Sort { get; set; }

//    /// <summary>
//    /// 备注
//    /// </summary>
//    public string Remark { get; set; }


//}

///// <summary>
///// 菜单参数
///// </summary>
//public class MenuInput
//{
//    /// <summary>
//    /// 菜单类型（字典 0目录 1菜单 2按钮）
//    /// </summary>
//    public MenuType Type { get; set; }

//    /// <summary>
//    /// 路由地址
//    /// </summary>
//    public string Router { get; set; }

//    /// <summary>
//    /// 权限标识
//    /// </summary>
//    public string Permission { get; set; }

//    /// <summary>
//    /// 打开方式（字典 0无 1组件 2内链 3外链）
//    /// </summary>
//    public MenuOpenTypeEnum OpenType { get; set; }
//}
///// <summary>
///// 
///// </summary>
//public class TreeForGrantInput
//{
//    /// <summary>
//    /// 应用分类（应用编码）
//    /// </summary>
//    public string Application { get; set; }
//    /// <summary>
//    /// 角色Id
//    /// </summary>
//    [Required, MaxLength(50)] 
//    public long RoleId { get; set; }
//}

///// <summary>
///// 
///// </summary>
//public class GetMenuTreeInput
//{
//    /// <summary>
//    /// 应用分类（应用编码）
//    /// </summary>
//    public string Application { get; set; }
//}
///// <summary>
///// 
///// </summary>
//public class GetMenuListInput
//{
//    /// <summary>
//    /// 名称
//    /// </summary>
//    public virtual string Name { get; set; }

//    /// <summary>
//    /// 编码
//    /// </summary>
//    public virtual string Code { get; set; }
//    /// <summary>
//    /// 状态-正常_0、停用_1 
//    /// </summary>
//    public YesOrNot? IsDisable { get; set; }

//    /// <summary>
//    /// 应用分类（应用编码）可空
//    /// </summary>
//    public string Application { get; set; }
//}



///// <summary>
///// 
///// </summary>
//public class QueryMenuInput : EntityBaseId
//{
//}
///// <summary>
///// 
///// </summary>
//public class ChangeAppMenuInput
//{
//    /// <summary>
//    /// 应用编码
//    /// </summary>DeleteMenuInput
//    [Required(ErrorMessage = "应用编码不能为空")]
//    public string Application { get; set; }

//    /// <summary>
//    /// 父Id
//    /// </summary>
//    public long Pid { get; set; }

//    /// <summary>
//    /// 名称
//    /// </summary>
//    public string Name { get; set; }

//    /// <summary>
//    /// 编码
//    /// </summary>
//    public string Code { get; set; }

//    /// <summary>
//    /// 菜单类型（字典 0目录 1菜单 2按钮）
//    /// </summary>
//    public MenuType Type { get; set; }

//    /// <summary>
//    /// 图标
//    /// </summary>
//    public string Icon { get; set; }

//    /// <summary>
//    /// 路由地址
//    /// </summary>
//    public string Router { get; set; }

//    /// <summary>
//    /// 组件地址
//    /// </summary>
//    public string Component { get; set; }

//    /// <summary>
//    /// 权限标识
//    /// </summary>
//    public string Permission { get; set; }

//    /// <summary>
//    /// 打开方式（字典 0无 1组件 2内链 3外链）
//    /// </summary>
//    public MenuOpenTypeEnum OpenType { get; set; }

//    /// <summary>
//    /// 是否可见（Y-是，N-否）
//    /// </summary>
//    public string Visible { get; set; }

//    /// <summary>
//    /// 内链地址
//    /// </summary>
//    public string Link { get; set; }

//    /// <summary>
//    /// 重定向地址
//    /// </summary>
//    public string Redirect { get; set; }

//    /// <summary>
//    /// 权重（字典 1系统权重 2业务权重）
//    /// </summary>
//    public MenuWeight Weight { get; set; }

//    /// <summary>
//    /// 排序
//    /// </summary>
//    public int Sort { get; set; }

//    /// <summary>
//    /// 备注
//    /// </summary>
//    public string Remark { get; set; }
//}

///// <summary>
///// 登录菜单-AntDesign菜单类型
///// </summary>
//public class AntDesignTreeNode
//{
//    /// <summary>
//    /// id
//    /// </summary>
//    public long? Id { get; set; }

//    /// <summary>
//    /// 父id
//    /// </summary>
//    public long? Pid { get; set; }

//    /// <summary>
//    /// 路由名称, 必须设置,且不能重名
//    /// </summary>
//    public string Name { get; set; }

//    /// <summary>
//    /// 组件
//    /// </summary>
//    public string Component { get; set; }

//    /// <summary>
//    /// 重定向地址, 访问这个路由时, 自定进行重定向
//    /// </summary>
//    public string Redirect { get; set; }

//    /// <summary>
//    /// 路由元信息（路由附带扩展信息）
//    /// </summary>
//    public Meta Meta { get; set; }

//    /// <summary>
//    /// 路径
//    /// </summary>
//    public string Path { get; set; }

//    /// <summary>
//    /// 控制路由和子路由是否显示在 sidebar
//    /// </summary>
//    public bool Hidden { get; set; }
//}
///// <summary>
///// 路由元信息内部类
///// </summary>
//public class Meta
//{
//    /// <summary>
//    /// 路由标题, 用于显示面包屑, 页面标题 *推荐设置
//    /// </summary>
//    public string Title { get; set; }

//    /// <summary>
//    /// 图标
//    /// </summary>
//    public string Icon { get; set; }

//    /// <summary>
//    /// 是否可见
//    /// </summary>
//    public bool Show { get; set; }

//    /// <summary>
//    /// 如需外部打开，增加：_blank
//    /// </summary>
//    public string Target { get; set; }

//    /// <summary>
//    /// 内链打开http链接
//    /// </summary>
//    public string Link { get; set; }
//}

///// <summary>
///// 
///// </summary>
//public class ScUITreeNode
//{
//    /// <summary>
//    /// id
//    /// </summary>
//    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
//    public long? Id { get; set; }

//    /// <summary>
//    /// 父id
//    /// </summary>
//    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
//    public long? Pid { get; set; }

//    /// <summary>
//    /// 地址
//    /// </summary>
//    public string path { get; set; }

//    /// <summary>
//    /// 组件
//    /// </summary>
//    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
//    public string component { get; set; }

//    /// <summary>
//    /// 重定向
//    /// </summary>
//    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
//    public string redirect { get; set; }

//    /// <summary>
//    /// 名称
//    /// </summary>
//    public string name { get; set; }

//    /// <summary>
//    /// 属性
//    /// </summary>
//    public ScuiMeta meta { get; set; }

//    //public bool alwaysShow { get; set; } = true;

//    /// <summary>
//    /// 子级
//    /// </summary>
//    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]

//    public List<ScUITreeNode> children { get; set; }
//}
///// <summary>
///// 
///// </summary>
//public class ScuiMeta
//{

//    /// <summary>
//    /// 菜单名称
//    /// </summary>
//    public string title { get; set; }

//    /// <summary>
//    /// 图表
//    /// </summary>
//    public string icon { get; set; }

//    /// <summary>
//    /// 
//    /// </summary>
//    public bool Affix { get; set; } = false;

//    /// <summary>
//    /// 
//    /// </summary>
//    [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
//    public string type { get; set; }

//    /// <summary>
//    /// 
//    /// </summary>
//    [JsonIgnore]
//    public bool? hidden { get; set; } = null;

//    /// <summary>
//    /// 
//    /// </summary>
//    [JsonIgnore]
//    public bool? dynamicNewTab { get; set; } = null;

//    /// <summary>
//    /// 是否关闭
//    /// </summary>
//    [JsonIgnore]
//    public bool noClosable { get; set; } = false;

//    /// <summary>
//    /// 不缓存
//    /// </summary>
//    [JsonIgnore]
//    public bool noKeepAlive { get; set; } = false;

//    /// <summary>
//    /// 按钮权限
//    /// </summary>
//    [JsonIgnore]
//    public string[] roles { get; set; }
//}

///// <summary>
///// 菜单树（列表形式）
///// </summary>
//public class MenuOutput : BaseDto, ITreeNode
//{
//    /// <summary>
//    /// 菜单Id
//    /// </summary>
//    public long Id { get; set; }

//    /// <summary>
//    /// 子节点
//    /// </summary>
//    public List<MenuOutput> Children { get; set; } = new List<MenuOutput>();

//    /// <summary>
//    /// 父Id
//    /// </summary>
//    public long Pid { get; set; }

//    /// <summary>
//    /// 名称
//    /// </summary>
//    public string Name { get; set; }

//    /// <summary>
//    /// 编码
//    /// </summary>
//    public string Code { get; set; }

//    /// <summary>
//    /// 菜单类型（字典 0目录 1菜单 2按钮）
//    /// </summary>
//    public MenuType Type { get; set; }

//    /// <summary>
//    /// 图标
//    /// </summary>
//    public string Icon { get; set; }

//    /// <summary>
//    /// 路由地址
//    /// </summary>
//    public string Router { get; set; }

//    /// <summary>
//    /// 组件地址
//    /// </summary>
//    public string Component { get; set; }

//    /// <summary>
//    /// 权限标识
//    /// </summary>
//    public string Permission { get; set; }

//    /// <summary>
//    /// 应用分类（应用编码）
//    /// </summary>
//    public string Application { get; set; }

//    /// <summary>
//    /// 打开方式（字典 0无 1组件 2内链 3外链）
//    /// </summary>
//    public MenuOpenTypeEnum OpenType { get; set; }
//    /// <summary>
//    /// 状态（字典 0正常 1停用 ）
//    /// </summary>
//    public YesOrNot? IsDisable { get; set; }
//    /// <summary>
//    /// 是否可见（Y-是，N-否）
//    /// </summary>
//    public string Visible { get; set; }

//    /// <summary>
//    /// 内链地址
//    /// </summary>
//    public string Link { get; set; }

//    /// <summary>
//    /// 重定向地址
//    /// </summary>
//    public string Redirect { get; set; }

//    /// <summary>
//    /// 权重（字典 1系统权重 2业务权重）
//    /// </summary>
//    public MenuWeight Weight { get; set; }

//    /// <summary>
//    /// 排序
//    /// </summary>
//    public int Sort { get; set; }
//    /// <summary>
//    /// 备注
//    /// </summary>
//    public string Remark { get; set; }

//    /// <summary>
//    /// 
//    /// </summary>
//    public long GetId()
//    {
//        return Id;
//    }

//    /// <summary>
//    /// 
//    /// </summary>
//    public long GetPid()
//    {
//        return Pid;
//    }

//    /// <summary>
//    /// 
//    /// </summary>
//    public void SetChildren(IList children)
//    {
//        Children = (List<MenuOutput>)children;
//    }
//}

///// <summary>
///// 菜单树---授权、新增编辑时选择
///// </summary>
//public class MenuTreeOutput : ITreeNode
//{
//    /// <summary>
//    /// 主键
//    /// </summary>
//    public long Id { get; set; }

//    /// <summary>
//    /// 父Id
//    /// </summary>
//    public long ParentId { get; set; }

//    /// <summary>
//    /// 名称
//    /// </summary>
//    public string Title { get; set; }

//    /// <summary>
//    /// 值
//    /// </summary>
//    public string Value => IntValue.ToString();
//    /// <summary>
//    /// 
//    /// </summary>
//    public long IntValue { get; set; }

//    /// <summary>
//    /// 排序，越小优先级越高
//    /// </summary>
//    public MenuWeight? Weight { get; set; }

//    /// <summary>
//    /// 子节点
//    /// </summary>
//    public List<MenuTreeOutput> Children { get; set; } = null;
//    /// <summary>
//    /// 
//    /// </summary>
//    /// <returns></returns>
//    public long GetId()
//    {
//        return Id;
//    }
//    /// <summary>
//    /// 
//    /// </summary>
//    /// <returns></returns>
//    public long GetPid()
//    {
//        return ParentId;
//    }

//    /// <summary>
//    /// 
//    /// </summary>
//    public void SetChildren(IList children)
//    {
//        Children = (List<MenuTreeOutput>)children;
//    }
//}

using RuoVea.OmiApi.UserRoleMenu.Service.Dto;

public class AddMenuInputDto : AddMenuInput {
    public new long? Pid { get; set; } = 0;
}
public class UpdateMenuInputDto : UpdateMenuInput
{
    public new long? Pid { get; set; } = 0;
}

